from django.db import models
from django.utils import timezone

# Create your models here.


class SubjectInfoModel(models.Model):
    """
    学科信息表格
    历史、数学、文学。。。
    """
    name = models.CharField(max_length=20, unique=True, null=False, blank=False, verbose_name="学科名称",
                            help_text="学科名称")
    desc = models.TextField(null=True, blank=True, verbose_name="学科介绍", help_text="学科介绍")
    creator = models.IntegerField(null=True, blank=True, verbose_name="创建员", help_text="创建员")
    is_access = models.BooleanField(default=False, null=False, blank=False, verbose_name="是否审核",
                                    help_text="是否审核：必须通过审核才能使用")
    checker = models.IntegerField(null=True, blank=True, verbose_name="审核员", help_text="审核员")
    expand_json = models.JSONField(null=True, blank=True, verbose_name="扩展字段",
                                   help_text="扩展字段：可能有其他新业务，现在预留一个存储json数据的字段")
    created_time = models.CharField(max_length=25, null=True, blank=True, verbose_name="创建时间",
                                    help_text="创建时间")

    class Meta:
        verbose_name = '学科信息表格'
        verbose_name_plural = verbose_name

    def __str__(self):
        return str(self.id)


class LabelInfoModel(models.Model):
    """
    标签信息表格
    """
    subject = models.IntegerField(null=False, blank=False, verbose_name="标签学科", help_text="标签学科")
    name = models.CharField(max_length=30, null=False, blank=False, verbose_name="标签名称",
                            help_text="标签名称")
    desc = models.TextField(null=True, blank=True, verbose_name="标签介绍", help_text="标签介绍")
    creator = models.IntegerField(null=True, blank=True, verbose_name="创建员", help_text="创建员")
    is_access = models.BooleanField(default=False, null=False, blank=False, verbose_name="是否审核",
                                    help_text="是否审核：必须通过审核才能使用")
    checker = models.IntegerField(null=True, blank=True, verbose_name="审核员", help_text="审核员")
    expand_json = models.JSONField(null=True, blank=True, verbose_name="扩展字段",
                                   help_text="扩展字段：可能有其他新业务，现在预留一个存储json数据的字段")
    created_time = models.CharField(max_length=25, null=True, blank=True, verbose_name="创建时间",
                                    help_text="创建时间")

    class Meta:
        verbose_name = '标签信息表格'
        verbose_name_plural = verbose_name

    def __str__(self):
        return str(self.id)


class QuestionTypeInfoModel(models.Model):
    """
    问题类型信息表格
    1：选择题，
    2：判断题，
    不填默认为1即选择题
    """
    type = models.IntegerField(unique=True, default=1, null=False, blank=False, verbose_name="问题类型",
                               help_text="问题类型")
    name = models.CharField(unique=True, max_length=20, null=False, blank=False, verbose_name="类型名称",
                            help_text="类型名称")
    creator = models.IntegerField(null=True, blank=True, verbose_name="创建员", help_text="创建员")
    is_access = models.BooleanField(default=False, null=False, blank=False, verbose_name="是否审核",
                                    help_text="是否审核：必须通过审核才能使用")
    checker = models.IntegerField(null=True, blank=True, verbose_name="审核员", help_text="审核员")
    expand_json = models.JSONField(null=True, blank=True, verbose_name="扩展字段",
                                   help_text="扩展字段：可能有其他新业务，现在预留一个存储json数据的字段")
    created_time = models.CharField(max_length=25, null=True, blank=True, verbose_name="创建时间",
                                    help_text="创建时间")

    class Meta:
        verbose_name = '问题类型信息表格'
        verbose_name_plural = verbose_name

    def __str__(self):
        return str(self.id)


class QuestionLevelInfoModel(models.Model):
    """
    问题难度信息表格
    范围支持从1 ~ 6，不填默认为0表示随机难度
    """
    level = models.IntegerField(unique=True, default=1, null=False, blank=False, verbose_name="问题难度",
                                help_text="问题难度")
    name = models.CharField(unique=True, max_length=20, null=False, blank=False, verbose_name="难度名称",
                            help_text="难度名称")
    creator = models.IntegerField(null=True, blank=True, verbose_name="创建员", help_text="创建员")
    is_access = models.BooleanField(default=False, null=False, blank=False, verbose_name="是否通过",
                                    help_text="是否审核：必须通过审核才能使用")
    checker = models.IntegerField(null=True, blank=True, verbose_name="审核员", help_text="审核员")
    expand_json = models.JSONField(null=True, blank=True, verbose_name="扩展字段",
                                   help_text="扩展字段：可能有其他新业务，现在预留一个存储json数据的字段")
    created_time = models.CharField(max_length=25, null=True, blank=True, verbose_name="创建时间",
                                    help_text="创建时间")

    class Meta:
        verbose_name = '问题难度信息表格'
        verbose_name_plural = verbose_name

    def __str__(self):
        return str(self.id)


class QuestionInfoModel(models.Model):
    """
    问题信息表格
    """
    subject = models.IntegerField(null=False, blank=False, verbose_name="问题学科",
                                  help_text="问题学科，可以有多个学科，比如唐史也包含在中国史内")
    label = models.IntegerField(null=False, blank=False, verbose_name="问题标签", help_text="问题标签，可以有多个标签")
    type = models.IntegerField(default=1, null=False, blank=False, verbose_name="问题类型", help_text="问题类型")
    level = models.IntegerField(default=1, null=False, blank=False, verbose_name="问题难度", help_text="问题难度")
    title = models.CharField(max_length=255, unique=True, null=False, blank=False, verbose_name="问题题目",
                             help_text="问题题目:题目不能重复")
    options = models.JSONField(null=False, blank=False, verbose_name="问题选项", help_text="问题选项")
    answer = models.JSONField(null=False, blank=False, verbose_name="问题答案", help_text="问题答案")
    analysis = models.TextField(null=True, blank=True, verbose_name="问题解析", help_text="问题解析")
    creator = models.IntegerField(null=True, blank=True, verbose_name="创建员", help_text="创建员")
    is_access = models.BooleanField(default=False, null=False, blank=False, verbose_name="是否审核",
                                    help_text="是否审核：必须审核员审核通过才能使用")
    checker = models.IntegerField(null=True, blank=True, verbose_name="审核员", help_text="审核员")
    expand_json = models.JSONField(null=True, blank=True, verbose_name="扩展字段",
                                   help_text="扩展字段：可能有其他新业务，现在预留一个存储json数据的字段")
    created_time = models.CharField(max_length=25, null=True, blank=True, verbose_name="创建时间",
                                    help_text="创建时间")

    class Meta:
        verbose_name = '问题信息表格'
        verbose_name_plural = verbose_name

    def __str__(self):
        return str(self.id)
